package org.eiahe.hr.attendance.service;

import org.eiahe.hr.attendance.domain.bo.OvertimeRuleBo;
import org.eiahe.hr.attendance.domain.vo.OvertimeRuleVo;
import org.ehe.common.mybatis.core.page.PageQuery;
import org.ehe.common.mybatis.core.page.TableDataInfo;

import java.util.Collection;
import java.util.List;

/**
 * 加班规则服务接口
 *
 * @author zhangnn
 */
public interface IOvertimeRuleService {

    /**
     * 查询加班规则
     *
     * @param ruleId 规则ID
     * @return 加班规则信息
     */
    OvertimeRuleVo queryById(Long ruleId);

    /**
     * 查询加班规则列表
     *
     * @param bo 加班规则业务对象
     * @return 加班规则列表
     */
    List<OvertimeRuleVo> queryList(OvertimeRuleBo bo);

    /**
     * 分页查询加班规则列表
     *
     * @param bo        加班规则业务对象
     * @param pageQuery 分页参数
     * @return 加班规则分页列表
     */
    TableDataInfo<OvertimeRuleVo> queryPageList(OvertimeRuleBo bo, PageQuery pageQuery);

    /**
     * 新增加班规则
     *
     * @param bo 加班规则业务对象
     * @return 是否成功
     */
    Boolean insertByBo(OvertimeRuleBo bo);

    /**
     * 修改加班规则
     *
     * @param bo 加班规则业务对象
     * @return 是否成功
     */
    Boolean updateByBo(OvertimeRuleBo bo);

    /**
     * 批量删除加班规则
     *
     * @param ids 规则ID集合
     * @return 是否成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 根据班次ID查询加班规则
     *
     * @param shiftId 班次ID
     * @return 加班规则
     */
    OvertimeRuleVo queryByShiftId(Long shiftId);
}
